// 设置 HTTP 响应
import { Controller, Get, Inject, Redirect } from '@midwayjs/decorator';
import { Context } from '@midwayjs/koa';

@Controller('/api/controller/http/redirect')
export class HomeController {
  /**
   * 重定向
   * 如果需要简单的将某个路由重定向到另一个路由，可以使用 @Redirect 装饰器
   * 。 @Redirect 装饰器的参数为一个跳转的 URL，以及一个可选的状态码，默认跳转的状态码为 302 。
   *
   * 此外，也可以通过 API 来跳转。
   *
   * 示例：使用装饰器
   */

  @Get('/redirect_login_check')
  async check() {
    // do sth.
  }

  @Get('/redirect_login')
  @Redirect('/redirect_login_check')
  async login() {
    // do sth.
  }

  @Get('/redirect_login_another')
  @Redirect('/redirect_login_check', 302)
  async loginAnother() {
    // do sth.
  }

  /**
   * 示例：使用 API
   * :::info 重定向不能在响应流关闭后（response.end之后）修改。 ::
   */
  @Inject()
  ctx: Context;

  @Get('/redirect_login_api')
  async home() {
    this.ctx.redirect('/redirect_login_check');
    // ...
  }
}
